import axios from "axios";
// import router from "@/router";

const BASE_URL = 'http://localhost:4001';

axios.defaults.timeout = 5000; // 超时时间设置
axios.defaults.withCredentials = true; // true允许跨域
axios.defaults.baseURL = BASE_URL;
// Content-Type 响应头
axios.defaults.headers.post["Content-Type"] = "application/x-www-form-urlencoded;charset=UTF-8";

// 响应拦截器
axios.interceptors.response.use(
  (response) => {
    
//     // 如果返回的状态码为200，说明接口请求成功，可以正常拿到数据
//     // 否则的话抛出错误
    if (response.status === 200) {
        console.log("响应成功",response.data);
        
      return Promise.resolve(response);
    } else {
        console.log("请求失败",response.data);
      return Promise.reject(response);
    }
  },
//   // 服务器状态码不是2开头的的情况
  (error) => {
    
    if (error.response.status) {
        console.log("服务器抛出错误",error.response);
    //   switch (error.response.status) {
    //     // 401: 未登录
    //     case 401:
    //       router.replace({
    //         path: "/",
    //         query: {
    //           // redirect: router.currentRoute.fullPath
    //         },
    //       });
    //       break;
    //     case 403:
    //       // console.log('管理员权限已修改请重新登录')
    //       // 跳转登录页面，并将要浏览的页面fullPath传过去，登录成功后跳转需要访问的页面
    //       setTimeout(() => {
    //         router.replace({
    //           path: "/",
    //           query: {
    //             // redirect: router.currentRoute.fullPath
    //           },
    //         });
    //       }, 1000);
    //       break;

    //     // 404请求不存在
    //     case 404:
    //       // console.log('请求页面飞到火星去了')
    //       break;
    //   }
      return Promise.reject(error.response);
    }
  }
);

export function getBaseURL() {
  return BASE_URL;
}

/**
 * 封装get方法
 * @param url
 * @param data
 * @returns {Promise}
 */
export function get(url, params?: object) {
  return new Promise((resolve, reject) => {
    axios.get(url, params).then(
      (response) =>resolve(response.data),
      (error) => reject(error)
    );
  });
}

/**
 * 封装post请求
 * @param url
 * @param data
 * @returns {Promise}
 */
export function post(url, data = {}) {
  return new Promise((resolve, reject) => {
    
    axios.post(url, data).then(
      (response) => resolve(response.data),
      (error) => reject(error)
    );
  });
}

/**
 * 封装delete请求
 * @param url
 * @param data
 * @returns {Promise}
 */
export function deletes(url, data = {}) {
  return new Promise((resolve, reject) => {
    axios.delete(url, data).then(
      (response) => resolve(response.data),
      (error) => reject(error)
    );
  });
}

/**
 * 封装put请求
 * @param url
 * @param data
 * @returns {Promise}
 */
export function put(url, data = {}) {
  return new Promise((resolve, reject) => {
    axios.put(url, data).then(
      (response) => resolve(response.data),
      (error) => reject(error)
    );
  });
}